package cn.zymall.user.service.impl;

import cn.zymall.common.model.Collect;
import cn.zymall.common.model.Spu;
import cn.zymall.user.mapper.CommodityGoodsMapper;
import cn.zymall.user.service.CommodityGoodsService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author : th
 * @ClassName: commodityGoodsImpl
 * @Description : 商品收藏实现类
 * @date 2020年08月18日 20:19
 **/
@Service
public class CommodityGoodsImpl implements CommodityGoodsService {


    @Autowired
    private CommodityGoodsMapper goodsMapper;


    /**
     * @author：th
     * @Description：查询用户收藏的所有商品
     * @Param：用户ID
     * @return：List<Spu>
     **/
    @Override
    public PageInfo<Collect> findAll(@Param("id")int id , @Param("page")int page, @Param("rows") int rows) {
        PageHelper.startPage(page,rows);
        List<Collect>  list=goodsMapper.findAll(id);
        PageInfo<Collect> pageaa = new PageInfo<>(list);
        return pageaa;
    }


    /**
     * @author：th
     * @Description：模糊查询收藏商品
     * @Param：用户ID，商品名称
     * @return：List<Spu>
     **/
    @Override
    public PageInfo<Collect> collectFuzzy(@Param("id")int id, @Param("value")String value,@Param("page")int page, @Param("rows") int rows){
        System.out.println(id+"/"+value+"/"+page+"/"+rows);
        PageHelper.startPage(page,rows);
        List<Collect>  list=goodsMapper.collectFuzzy(id,value);
        PageInfo<Collect> pageaa = new PageInfo<>(list);
        return pageaa;
    }


    /**
     * @author：th
     * @Description：根据id查询收藏的商品
     * @Param：用户id，商品id
     * @return：Collect
     **/
    @Override
    public Collect collectId(int id,int cid){
        return goodsMapper.collectId(id,cid);
    }




    /**
     * @author：th
     * @Description：修改收藏的商品状态
     * @Param：用户ID，商品ID
     * @return：Boolean
     **/
    @Override
    public boolean collectUpdate(int id,int cid){
        return goodsMapper.collectUpdate(id,cid);
    }


    /**
     * @author：th
     * @Description：查询收藏表，有就修改，没有就添加
     * @Param：Collect
     * @return：boolean
     **/
    @Override
    public boolean collectSave(Collect collect){
	    Spu spu = goodsMapper.selectByStuId(collect.getSpuId());
	    if(spu==null){
		    return false;
	    }
        int id = collect.getUserId();
        int cid = collect.getSpuId();
        Collect collect1 = collectId(id, cid);
        if (collect1.getCollectStatus()!=0){
            return false;
        }else{
            collect.setCollectTime(new Date());
            collect.setCollectStatus((byte) 1);
            return goodsMapper.collectSave(collect);
        }

    }

    /**
     * 修改
     * @param collect
     * @return
     */
    @Override
    public boolean updateById(Collect collect){
	    Spu spu = goodsMapper.selectByStuId(collect.getSpuId());
	    if(spu==null){
	    	return false;
	    }
	    int id = collect.getUserId();
        int cid = collect.getSpuId();
        if (collectId(id,cid) != null){
            return false;
        }else{
            return goodsMapper.updateById(collect)>0?true:false;
        }
    }

    /**
     * 删除
     * @param collect
     * @return
     */
    @Override
    public boolean deleteById(Collect collect){
        collect.setCollectStatus((byte)0);
        return goodsMapper.updateById(collect)>0?true:false;
    }
    /**
     * @author：th
     * @Description：商品收藏删除
     * @Param：用户id，list
     * @return：Boolean
     **/
    @Override
    public boolean collectRemove(@Param("id")int id,List list){
        return goodsMapper.collectRemove(id,list);
    }




}
